package com.reservation.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.reservation.entity.Announcement;

import java.util.List;

/**
 * 公告服务接口
 */
public interface AnnouncementService {
    
    /**
     * 添加公告
     *
     * @param announcement 公告信息
     * @return 添加成功的公告信息
     */
    Announcement addAnnouncement(Announcement announcement);
    
    /**
     * 修改公告信息
     *
     * @param announcement 公告信息
     * @return 修改后的公告信息
     */
    Announcement updateAnnouncement(Announcement announcement);
    
    /**
     * 获取公告详情
     *
     * @param id 公告ID
     * @return 公告信息
     */
    Announcement getAnnouncementById(Long id);

    /**
     * 发布公告
     * @param id 公告ID
     * @return
     */
    boolean updateStatus(Long id);
    
    /**
     * 删除公告
     *
     * @param id 公告ID
     * @return 是否成功
     */
    boolean deleteAnnouncement(Long id);
    
    /**
     * 分页查询公告列表
     *
     * @param page  分页参数
     * @param title 公告标题（可选）
     * @return 公告列表
     */
    IPage<Announcement> getAnnouncementList(Page<Announcement> page, String title, String status);
    
    /**
     * 获取所有公告
     *
     * @return 公告列表
     */
    List<Announcement> getAllAnnouncements();
    
    /**
     * 获取最新的公告
     *
     * @param limit 限制数量
     * @return 公告列表
     */
    List<Announcement> getLatestAnnouncements(int limit);
}